滑點是一個非常不直覺,但是無論如何一定會存在,沒有方法可以迴避的問題。在大部分的網頁應用中,很少要求前後端的資料要非常即時的同步,所以不太會有這個問題。就我們用 Rive 做遊戲動畫的經驗來說,這可能會讓工程師或 PM 產生一點誤會,進而提出一些無法實現的需求。因此趁這個機會,來解釋一下什麼是滑點問題。
滑點問題通常出現在外匯或虛擬貨幣的即時報價上,前端跟後端拿最新的報價,顯示在畫面上,但報價是每秒甚至每毫秒在變的,而後端送資料到前端總需要一點時間吧?因此最終使用者看到的報價,一定是一段時間前的報價。
例如使用者看到現在比特幣 30,000 美元,於是下單買進一顆比特幣,這個請求打到後端花了 200 ms,在這短短的 200 ms 內,可能比特幣漲價到 32,000 美元,這其中的差額就是滑點或滑價。
這就是為什麼要有限價單。
理解滑點的本質後,應該能理解到幾件事:
就我們的經驗來說,「眼睛看到的一切都發生在 200 ms 以前」這個概念太不直覺了,而在某些特定的專案或應用程式裡面,可能工程師或 PM 會非常要求前後端的資料一定要一致,不能有誤差否則容易起爭議,特別是跟金融相關的網頁。
例如我們曾經收到一個需求是,要把比特幣的價格用 Rive 動畫顯示在網頁上,做成一個類似心電圖的東西。但因為有滑點問題,再加上動畫渲染也會占用一點時間,所以最終使用者在每一個瞬間看到的價格,一定是幾毫秒以前的價格,如果使用者精明一點拿其他資料來源比對,或者直接請後端工程師拿資料出來比較的話,一定看的到一點誤差,這就是 Rive 動畫遇到的滑點問題。
如同我們剛剛所說的,滑點問題無論是理論上還是實務上,基本上無法避免,所以很多時候我們也只能盡量說服其他工程師或 PM。但後來發現,似乎不是每個人都有滑點的概念,因此除了要花一點時間解釋以外,如果能直接在開需求時就做一點處理,可能會是更好的解決辦法。
再說得更遠一點,Rive 因為讓製作動畫變得非常簡單,所以設計師跟 PM 可能會……比較興奮,盡情地揮灑創意,無論是做出更多更精緻的動畫,或是提出更厲害的需求等等。
這有點像管理學上的彼得定律,一個東西發展到最後,終究會有它的限制,滑點問題就是其中一個,因此與其花太多時間解決這些其他國家或大公司很強的工程師都無法解決的問題,可能適時的認知道他的界線,投資時間與精力在其他部分來提升產品的競爭力,可能會是一個比較划算的選擇。